import { ReactNode } from "react";

/**
 * @typedef { PortalIdType} - Тип id-селектора dom-элемента куда вставляется контент.
 */
export type PortalIdType = string;

/**
 * @typedef { PortalElementType } - Тип для dom-элемента куда вставляется контент.
 */
export type PortalElementType =
    | (() => HTMLElement | Element | null)
    | HTMLElement
    | Element
    | string
    | undefined
    | null
;

/**
 * Пропсы компонента Portal
 * @property { React.ReactNode } children - Контент для рендера с помощью портала.
 * @property { PortalIdType } portalId - id-селектор DOM-элемента куда необходимо вставить контент.
 * @property { PortalElementType } portalElement - DOM-элемент куда необходимо вставить контент.
 */
export interface IPortalProps {
    children?: ReactNode;
    portalId?: PortalIdType;
    portalElement?: PortalElementType;
}
